package gdconf

import (
	"server_cluster/common/logger"
)

// 装备技能配置表

type EquipSkillConfig struct {
	Id           int32         `csv:"Id" gorm:"primary_key;autoIncrement:false" ` // 装备技能id
	SkillGroup   int32         `csv:"SkillGroup,omitempty"`                       // 技能组
	Level        int32         `csv:"Level,omitempty"`                            // 等级
	FightPropAdd *FightPropAdd `csv:"Attribute,omitempty"`                        // 增加战斗属性
	SkillIdList  IntArray      `csv:"PassiveSkills,omitempty"`                    // 实际生效被动
}

func (e *EquipSkillConfig) TableName() string {
	return "config_equip_skill"
}

func (g *GameDataConfig) saveEquipSkillConfig() {
	saveTableToDb[EquipSkillConfig](g.Db, readTable[EquipSkillConfig](g.CsvPathPrefix+"equip_skill.csv"))
}

func (g *GameDataConfig) loadEquipSkillConfig() {
	g.GameDataMaps.EquipSkillConfigMap = make(map[int32]*EquipSkillConfig)
	for _, equipSkillConfig := range loadTableFromDb[EquipSkillConfig](g.Db) {
		g.GameDataMaps.EquipSkillConfigMap[equipSkillConfig.Id] = equipSkillConfig
	}
	logger.Info("EquipSkillConfig Count: %v", len(g.GameDataMaps.EquipSkillConfigMap))
}

func GetEquipSkillConfig(id int32) *EquipSkillConfig {
	value, exist := CONF.GameDataMaps.EquipSkillConfigMap[id]
	if !exist {
		logger.Error("[ConfigNotFound] EquipSkillConfig, id: %v", id)
		return nil
	}
	return value
}

func GetEquipSkillConfigMap() map[int32]*EquipSkillConfig {
	return CONF.GameDataMaps.EquipSkillConfigMap
}

func GetConfigEquipSkillByGroupAndLevel(group int32, level int32) *EquipSkillConfig {
	for _, equipSkillConfig := range CONF.GameDataMaps.EquipSkillConfigMap {
		if equipSkillConfig.SkillGroup == group && equipSkillConfig.Level == level {
			return equipSkillConfig
		}
	}
	return nil
}
